//package com.emmmya.ocs.config.autoRunner.task;
//
//import cn.hutool.core.date.DateUtil;
//import com.alibaba.fastjson.JSON;
//import com.emmmya.ocs.common.base.AbstractDefaultTask;
//import com.emmmya.ocs.common.utils.httpClient.RestTemplateUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.web.client.RestTemplate;
//
//import java.security.interfaces.RSAPublicKey;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.TimeZone;
//
///**
// * @description: 检查产品是否激活
// * @author: Harin
// * @createDate: 2021-10-08
// * @version: 1.0
// */
//@Component
//@Slf4j
//public class SelfCheckeProductTaskManagementTask extends AbstractDefaultTask {
//    @Autowired
//    RestTemplateUtil restTemplateUtil;
//
//    @Autowired
//    RestTemplate restTemplate;
//
//
//    @Override
//    public boolean run(){
//        setTaskName("校验产品是否激活");
//        setOrder(0);
//        setResultFlag(true);
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        SimpleDateFormat format8 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        format8.setTimeZone(TimeZone.getTimeZone("GMT-:08:00"));
//        log.info("[检查产品]：开始构建环境....");
//        //1.获取本机的机器码
//        String machineCode = HarinSystemUtils.getMachineCode();
//        //2.发送http请求拿到该机的信息，包括公钥与生效时间、过期时间
//        CustomerVo customerVo = new CustomerVo();
//        customerVo.setMachineCode(machineCode);
//
//        try {
//            Result<Object> resultObj = restTemplateUtil.requestBeanPost("www.emmmya.com", "/customer/checkMe", customerVo, Result.class, restTemplate);
//            Integer code = resultObj.getCode();
//            if (code != 200) {
//                throw new CommonException(resultObj.getMessage());
//            }
//            String customerStr = JSON.toJSONString(resultObj.getResult());
//            CustomerEntity customer = JSON.parseObject(customerStr, CustomerEntity.class);
//            log.info("[检查产品]：结果构建环境....");
//            log.info("[检查产品]：开始检查产品有效期....");
//            if (customer != null) {
//                //公钥
//                String publicKey = customer.getPublicKey();
//                //获取生效日期
//                Date effectiveDate = new Date(customer.getEffectiveTimestamp());
//                String effectiveDateStr = format8.format(effectiveDate);
//                effectiveDate = format.parse(effectiveDateStr);
//                //获取失效日期
//                Date expirationDate = new Date(customer.getExpirationTimestamp());
//
//                String expirationDateStr = format8.format(expirationDate);
//                expirationDate = format.parse(expirationDateStr);
//                //服务器时间
//                Date toDay = new Date(resultObj.getTimestamp());
//                //本机当地时间
//                Date now = new Date();
//                //比对服务器时间和本机时间是否在同一天
//                if (DateUtil.isSameDay(toDay, now)) {
//                    //生效日期和当天时间对比
//                    int effective = DateUtil.compare(toDay, effectiveDate);
//                    if (effective > 0) {
//                        //当天与过期时间对比
//                        int expiration = DateUtil.compare(expirationDate, toDay);
//                        if (expiration > 0) {
//                            //获取根据机器码获取注册码，发送请求到服务器校验
//                            String auth = HarinSystemUtils.auth(machineCode);
//                            RSAPublicKey publicKey1 = RSAUtils.getPublicKey(new String(RSAUtils.base642Byte(customer.getModulus()), RSAConstant.CHAR_SET), new String(RSAUtils.base642Byte(publicKey), RSAConstant.CHAR_SET));
//                            byte[] bytes = RSAUtils.encryptByPublicKey(auth.getBytes(RSAConstant.CHAR_SET), publicKey1);
//                            String registrationCode = RSAUtils.byte2Base64(bytes);
//                            customerVo.setRegistrationCode(registrationCode);
//                            resultObj = restTemplateUtil.requestBeanPost("www.emmmya.com", "/customer/verifyCustmerInfo", customerVo, Result.class, restTemplate);
//                            code = resultObj.getCode();
//                            if (code == 200) {
//                                SystemConfig.activeState = true;
//                                log.warn("激活状态，正常使用！");
//                            } else { ////不一致，把全局变量更改，禁止产品使用
//                                SystemConfig.activeState = false;
//                                log.warn("已过期，请重新作者重新激活！");
//                            }
//
//                        } else {
//                            SystemConfig.activeState = false;
//                            log.warn("已过期，请重新作者重新激活！");
//                            //throw new CommonException("已过期，请重新作者重新激活！");
//                        }
//                    } else {
//                        SystemConfig.activeState = false;
//                        log.warn("未到生效期！");
//                        //throw new CommonException("未到生效期！");
//                    }
//
//                } else {
//                    SystemConfig.activeState = false;
//                    log.warn("本机时间运服务器时间不匹配，请查看本机时间。");
//                    //throw new CommonException("本机时间运服务器时间不匹配，请查看本机时间。");
//                }
//
//            } else {
//                SystemConfig.activeState = false;
//                log.warn("未查询到产品激活信息！");
//            }
//        }catch (Exception e){
//            e.printStackTrace();
//        }
//        log.info("[检查产品]：结束检查产品有效期....");
//        setMessage("自检结束");
//        return true;
//    }
//}
